﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using GestionaleLib;
using GestionaleLib.Controller;

namespace Leaf.View.Prodotti
{
    public partial class frmProdottoDettaglio : Form
    {
        private frmAggiungiProdotto RifAggiungiProdotti;
        private FormStatus.StatoForm StatoForm;
        private List<ProdottoDettaglio> ListaDettagli;

        public frmProdottoDettaglio(frmAggiungiProdotto RifAggiungiProdotti, 
            FormStatus.StatoForm StatoForm= FormStatus.StatoForm.Nuovo,List<ProdottoDettaglio>ListaDettagli=null)
        {
            InitializeComponent();
            this.RifAggiungiProdotti = RifAggiungiProdotti;
            this.ListaDettagli = ListaDettagli;
            this.StatoForm = StatoForm;
            ImpostaStato();
        }
        private void ImpostaStato()
        {
            switch (StatoForm)
            {
                case FormStatus.StatoForm.Nuovo:
                    this.Text = "Nuovo Dettaglio Prodotto";
                    if (ListaDettagli.Count == 0) //se la lista è zero, creo una nuova istanza
                        ListaDettagli = new List<ProdottoDettaglio>();
                    else
                        AggiornaGriglia(); //altrimenti carico la lista in memoria

                    break;
                case FormStatus.StatoForm.Modifica:
                    this.Text = "Modifica Dettaglio Prodotto";
                    if (ListaDettagli==null)
                        ListaDettagli = new List<ProdottoDettaglio>();
                    LeggiCampiModifica();
                    break;
            }
        }
        private void LeggiCampiModifica()
        {
            AggiornaGriglia();
        }
        private void cmdAnnulla_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        private void AggiornaGriglia()
        {
            Grid.DataSource = null;
            Grid.DataSource = ListaDettagli;
            FormattaGriglia();
        }
        private void FormattaGriglia()
        {
            Grid.Columns["Id"].Visible = false;
        }
        private void cmdAggiungi_Click(object sender, EventArgs e)
        {
            if (txtCaratteristica.Text.Trim().Equals("") || txtValore.Text.Trim().Equals(""))
            {
                return;
            }
            ProdottoDettaglio ProdDett = new ProdottoDettaglio();
            ProdDett.Caratteristica = txtCaratteristica.Text;
            ProdDett.Valore = txtValore.Text;

            ListaDettagli.Add(ProdDett);
            AggiornaGriglia();
        }
        private void cmdRimuovi_Click(object sender, EventArgs e)
        {
            if (Grid.Rows.Count > 0 && Grid.DataSource!=null)
            {
                ListaDettagli.Remove((ProdottoDettaglio)Grid.CurrentRow.DataBoundItem);
                AggiornaGriglia();
            }
        }
        private void cmdSalvaTutto_Click(object sender, EventArgs e)
        {
            if (ListaDettagli.Count == 0) 
            {
                MessageBox.Show("Non è stato inserito alcun dettaglio. Impossibile continuare");
                return;
            }
            try
            {
                RifAggiungiProdotti.CaricaListaInDettaglio(ListaDettagli);
                this.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
}
